home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Software Vault: The Gold Collection
/
Software Vault - The Gold Collection (American Databankers) (1993).ISO
/
cdr11
/
intmemry.zip
/
MEMO1158.TXT
< prev
next >
Wrap
Text File
|
1992-12-02
|
8KB
|
155 lines
╔═════════════════════════════════════════════════════════════════════════╗
║ ║
║ DOS 5.0 Upper Memory Blocks ║
║ ║
╚═════════════════════════════════════════════════════════════════════════╝
DOS 5.0 UPPER MEMORY BLOCK SUPPORT
DOS 5.0 is the first version of DOS to recognize and make use of Upper
Memory Blocks, or UMBs. To understand what that means, it is first
necessary to understand UMBs.
All PC compatible computers are based on one of the x86 family of Intel
microprocessors. This family includes the 8086, 8088, 80286, i386 SX,
i386 DX, i486 SX and i486 DX. DOS works on all these CPUs, but in order
to maintain backward compatibility with the 8086/8088, DOS is limited to
REAL mode on all these processors.
This means the processor is essentially limited to addressing 1024k, or
one megabyte, of memory address space. (For an interesting exception,
refer to our article on DOS 5.0 and the High Memory Area, FaxBACK document
number 1250.)
Design decisions made when the original PCs were being created caused this
one-megabyte address range to be divided into 640k address space for user
addressable RAM, and 384k address space for system ROM BIOS, video buffer
memory and add-in boards. Common uses of this memory area include network
card ROMs and RAM, EGA or VGA card ROMs and the 64k address range used by
an EMS board such as the Above Board Plus or Above Board MC.
This 384k address range, while not "conventional" DOS memory, is
addressable by the CPU in REAL mode and can be used for either RAM or ROM.
As the 640k of "conventional" memory became more and more crowded with
TSRs, network drivers, mouse drivers and other utilities, and as DOS
applications required more and more memory, the PC industry began looking
at this 384k address range for potential help in making all the pieces
fit.
UMBs are blocks of RAM that have been "mapped" into unused address space
in the "reserved" 384k from 640 to 1024. This is done in two different
ways, depending on the CPU in the specific PC.
PCs based on the 8086/8088 or the 286 processor will require hardware that
actually decodes RAM at the address range where the UMBs are being
provided. This can be on the motherboard, although relatively few
motherboards implement this feature, or it can be on an add-in board. Both
the Above Board Plus and the Above Board MC can map memory into the
address spaces where UMBs are provided.
PCs based on i386 SX or later processors have a unique ability. The
processor on these PCs has an internal mapping capability that allows any
of the memory that the CPU can access to be remapped at any address. This
allows the CPU to "fill" the unused address ranges between 640k and 1024k
with RAM if two conditions are met:
1. There must be sufficient EXTENDED memory.
2. The PC must be running a 386 control program that implements
this feature.
Previous to DOS 5.0, there was no support or even recognition of UMBs in
DOS itself. To take advantage of this address range, the PC owner was
required to purchase separate utilities that would map and manage the
memory.
Such utilities as QRAM and MOVE'M worked with EMS boards, such as the
Above Board product line, to "capture" pages of RAM mapped into the
reserve address range and then to load TSRs, drivers, etc into this RAM.
Utilities like QEMM386 or 386MAX worked in PCs based on i386 SX or later
CPUs to accomplish the same tasks, without the need for EMS boards,
providing the PC had sufficient EXTENDED memory.
DOS 5.0 supports the use of UMBs. It does this through essentially two
means:
EMM386.EXE
EMM386.EXE is a 386 control program that runs on most i386 or i486
systems with sufficient EXTENDED memory and that provides support
for both EMS applications and UMBs.
(Note - this is the only provision built into DOS 5.0 for
providing UMBs, and it only works on i386 SX or later systems.)
DOS=UMB
This statement, added to your CONFIG.SYS file, causes DOS to take
control of any DOS 5.0 compatible UMBs that exist in your system,
and allow DOS to load code into those UMBs via the DOS internal
commands DEVICEHIGH and LOADHIGH.
DEVICEHIGH is used in the CONFIG.SYS instead of DEVICE as in:
DEVICEHIGH=C:\DOS\ANSI.SYS.
LOADHIGH is used anywhere a TSR would be executed as if from the
command line. Therefore you would use LOADHIGH on the command line
or in batch files such as the AUTOEXEC.BAT file. LOADHIGH can be
abbreviated to LH as in: LOADHIGH MOUSE.COM or LH MOUSE.COM.
It is important to remember that DOS 5.0, with the exception of
EMM386.EXE, makes no provision for providing UMBs. In other words, PCs
based on the 8086, 8088 or 286 CPU will still require an EMS board, and a
utility such as QRAM or MOVE'M to map memory into the reserved memory
address ranges used for UMBs. Also, since the UMBs provided by such a
utility may not be DOS 5.0 compatible, you may not be able to use the
DOS=UMB command.
This will not keep you from taking advantage of UMBs on such systems. The
utilities that provide UMB support come with their own equivalent of
DEVICEHIGH or LOADHIGH that allows TSRs and drivers to be loaded into
these UMBs. Even better, these utilities usually come with an
installation program that optimizes the use of UMBs, matching appropriate
blocks of memory with appropriate files. At this point, DOS 5.0 provides
no such utility.
Some day, no doubt, TSRs and drivers will be written to work directly with
DOS in the use of UMBs. Some day DOS may even load some of its own system
files into UMBs, instead of just allowing drivers or TSRs to be loaded
there. Until this happens, however, the DOS 5.0 user is better off to use
the utilities provided with his UMB software to manage the UMBs in the
system, and not use the DOS=UMB command. The exception is the EMM386.EXE
user, who must use the DOS=UMB command to gain access to UMBs.
REQUIREMENTS for Upper Memory Blocks:
8086/8088/286 based systems
1. Hardware (Above Board) that decodes memory in the reserved range
2. Software (such as QRAM or MOVE'M) that will manage this memory
i386 SX or later systems
1. Sufficient EXTENDED memory
2. 386 control software (such as EMM386.EXE, QEMM386 or 386MAX)
There is a third requirement in all systems - free address space! Keep in
mind:
Video Buffer area - A000 to BFFF
EGA card ROMS C000 to C3FF
VGA card ROMS C000 to C7FF
Network cards 32k to 64k of ROM and RAM in C000-DFFF range
System BIOS Ranges from 32k to 128k, ending at FFFF
Unused ROM sites IBM AT, as well as others, have sockets on the
motherboard for ROMs that would decode in the E000-EFFF
range. Therefore on these computers, that range can not
be used for UMBs.
Hard Disk ROMS XT-type controllers, as well as ESDI controllers
for ATs and Micro Channel machines, have ROM that
decode in this range.
EMS page frame If your system has LIM Expanded memory, there will
most likely be a 64k page frame somewhere in this
area.
Remember, UMBs CAN NOT be provided in address space already used by other
devices - either for RAM or ROM.
══════════════════════════════════════════════════════════════════════════════
End of file Intel FaxBack # 1158 December 2,1992